import re

# 汉字数字转阿拉伯数字的映射
chinese_digits = {
    '零': 0, '一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6,
    '七': 7, '八': 8, '九': 9, '十': 10, '百': 100, '千': 1000,
}


# 转换汉字数字到阿拉伯数字
def chinese_to_arabic(chinese_num):
    result = 0
    temp = 0  # 临时存储当前位数的值
    unit = 1  # 当前位的单位，开始为1（个位）

    for char in reversed(chinese_num):  # 从右到左处理
        if char in chinese_digits:
            digit = chinese_digits[char]
            if digit == 10:  # 遇到"十"
                if temp == 0:
                    temp = 1  # 例如"十"代表10
                unit = 10  # 十代表当前的单位是10
            elif digit == 100:  # 遇到"百"
                if temp == 0:
                    temp = 1  # 例如"百"代表100
                unit = 100  # 百代表当前的单位是100
            elif digit == 1000:  # 遇到"千"
                if temp == 0:
                    temp = 1  # 例如"千"代表1000
                unit = 1000  # 千代表当前的单位是1000
            else:
                temp += digit * unit  # 加上数字乘以单位
                unit = 1  # 复位单位
        else:
            if temp > 0:
                result += temp
            temp = 0
    return result + temp  # 返回最终的值


# 正则表达式提取数字部分
def extract_chapter_number(text):
    # 匹配“第X章”的部分，X可以是阿拉伯数字或汉字
    match = re.match(r'第([\u4e00-\u9fa5\d]+)章', text)
    if match:
        chapter = match.group(1)  # 提取“第X章”中的X部分
        # 检查是否是阿拉伯数字，如果是，直接返回
        if chapter.isdigit():
            return int(chapter)
        else:
            # 否则，转换汉字数字为阿拉伯数字
            return chinese_to_arabic(chapter)
    return None  # 如果没有匹配到


# 测试数据
# texts = ["第1章 123", "第2章 124235", "第三百五十章 12345", "第十章 567", "第二百三十四章 890"]
#
# for text in texts:
#     chapter_number = extract_chapter_number(text)
#     print(f"文本: {text}, 提取的数字: {chapter_number}")
